第三期代码示例:MOD - 无情铁手
Mod说明
关联知识:
LongFei:第三期 血肉 - 组件与动作39 赞同 · 7 评论文章
此mod目的在于帮助大家学习如何编写自己的component与action,加深理解。
代码位于github仓库 dst_mod_tutorial,不熟悉github的同学,可以直接点击绿色的【code】按钮,然后点击【Download Zip】。每一期的代码都是独立一个文件夹的mod,可以直接放入游戏的mods文件夹中使用。这个Mod关联的是第三期,相应的文件夹就是lesson3
文件结构如下
dst_mod_tutorial //
├─ README.md //
└─ lesson3 // 第三期Mod
├─ modicon.tex //
├─ modicon.xml //
├─ modinfo.lua //
├─ modmain.lua // 主程序文件
├─ modworldgenmain.lua //
└─ scripts //
├─ components //
│ └─ ironhand.lua // component定义
└─ lf_actions.lua // 动作相关参数
主要阅读modmain.lua
, ironhand.lua
,lf_actions.lua
这三个文件
- modmain: 主程序文件,你可以从中看到如何添加Action以及其与SG,component的关联
- ironhand: component定义,你可以从中看到如何定义一个component以及相应的函数
- lf_actions: 通过两个table存储了action相关的参数,后续要调整也非常方便。
顺带一提,这个代码是做了一些优化的,copy自我的Samansha人物Mod,是我自己编写的Mod框架的一部分。通过框架的构建,将action的关键参数分离出来独立成一个文件,后续要添加新的动作会容易很多。如果你刚开始学习Mod制作,可以先copy这段代码来解决action方面的需求,不需要改动modmain中的内容,只需要修改lf_actions.lua
中的table就可以了。
需求描述
- 希望为所有的玩家添加一种能力,允许人物徒手完成原本需要工具才能完成的砍树、挖矿等工作
- 限制条件:每次使用熟练度+1,血量-1
- 成长阶段1:熟练度到达100后,不再扣血
- 成长阶段2:熟练度到达200后,变成双击,相当于工作次数减半,但熟练度仍然为+1
- 成长阶段3:熟练度到达500后,任何工作都只需一次就可以完成。
测试:在游戏中,空手状态下,光标移动到树、矿石上时,会提示【铁手 xxx】,然后右键目标,可以砍树或挖矿,并且在完成动作后,人物会说话表明当前的熟练度。根据熟练度的不同,需要重复的次数也不同。100熟练度以下,每次攻击会扣1血。
实现要点
- 构建一个新的component:熟练度的增加和存储,以及徒手砍树、挖矿等
- 构建一个新的动作:调用copmonent的函数
- 连接component与action,使得玩家的界面上可以直接点击树、矿石等物体进行互动。
- 让新动作有相应的动画表现:在玩家的SG中添加ActionHanlder,触发新动作后会自动转向一个已存在的state
详细说明请看代码中的注释